#include "Cueva.h"
#include "EscenarioModelo.h"
#include "Sendero.h"

Cueva* Cueva::instancia = 0;

Cueva::Cueva(){
	Sendero* send = EscenarioModelo::getEscenario()->getSendero();
	
	this->puntoPuertaAfuera = send->getPuntoSenderoConPuntoGrilla(8,7);
	this->puntoPuertaAdentro = send->getPuntoSenderoConPuntoGrilla(8,8);
	this->extremoSuperiorIzquierdo = send->getPuntoSenderoConPuntoGrilla(7,8);
	this->extremoInferiorIzquierdo = send->getPuntoSenderoConPuntoGrilla(7,9);
	this->extremoSuperiorDerecho = send->getPuntoSenderoConPuntoGrilla(9,8);
	this->extremoInferiorDerecho = send->getPuntoSenderoConPuntoGrilla(9,9);
}

Cueva* Cueva::getInstance(){
	if(!instancia){
		instancia = new Cueva();
	}
	return instancia ;
}

// Retorna un ptoSendero de afuera de la cueva
Punto* Cueva::getPuntoPuertaAfuera(){
	return this->puntoPuertaAfuera;
}

// Retorna un ptoSendero de adentro de la cueva
Punto* Cueva::getPuntoPuertaAdentro(){
	return this->puntoPuertaAdentro;
}

Punto* Cueva::getExtremoSuperiorIzquierdo(){
	return this->extremoSuperiorIzquierdo ;
}

Punto* Cueva::getExtremoInferiorIzquierdo(){
	return this->extremoInferiorIzquierdo ;
}

// Retorna ptoSendero extremo superior der de la cueva
Punto* Cueva::getExtremoSuperiorDerecho(){
	return this->extremoSuperiorDerecho ;
}

// Retorna ptoSendero extremo superior der de la cueva
Punto* Cueva::getExtremoInferiorDerecho(){
	return this->extremoInferiorDerecho ;
}

void Cueva::destroy(){
	delete this->instancia ;
}

Cueva::~Cueva(){
	delete this->puntoPuertaAfuera;
	delete this->puntoPuertaAdentro;
	delete this->extremoSuperiorIzquierdo;
}
